9 research outputs found
RedAlert: Determinacy Inference for Prolog
This paper revisits the problem of determinacy inference addressing the
problem of how to uniformly handle cut. To this end a new semantics is
introduced for cut, which is abstracted to systematically derive a backward
analysis that derives conditions sufficient for a goal to succeed at most once.
The method is conceptionally simpler and easier to implement than existing
techniques, whilst improving the latter's handling of cut. Formal arguments
substantiate correctness and experimental work, and a tool called 'RedAlert'
demonstrates the method's generality and applicability.Comment: Theory and Practice of Logic Programming, 2011, 27th Int'l.
Conference on Logic Programming (ICLP'11) Special Issue, volume 11, issue 4-
Correct Reasoning about Logic Programs
In this PhD project, we present an approach to the problem of determinacy inference in logic programs with cut, which treats cut uniformly and contextually. The overall aim is to develop a theoretical analysis, abstract it to a suitable domain and prove both the concrete analysis and the abstraction correct in a formal theorem prover (Coq). A crucial advantage of this approach, besides the guarantee of correctness, is the possibility of automatically extracting an implementation of the analysis
Coalescing: Syntactic Abstraction for Reasoning in First-Order Modal Logics
International audienceWe present a syntactic abstraction method to reason about first-order modal logics by using theorem provers for standard first-order logic and for propositional modal logic
Proofs You Can Believe In: Proving Equivalences Between Prolog Semantics in Coq
Basing program analyses on formal semantics has a long and successful tradition in the logic programming paradigm. These analyses rely on results about the relative correctness of mathematically sophisticated semantics, and authors of such analyses often invest considerable effort into establishing these results. The development of interactive theorem provers such as Coq and their recent successes both in the field of program verification as well as in mathematics, poses the question whether these tools can be usefully deployed in logic programming. This paper presents formalisations in Coq of several general results about the correctness of semantics in different styles; forward and backward, top-down and bottom-up. The results chosen are paradigmatic of the kind of correctness theorems that semantic analyses rely on and are therefore well-suited to explore the possibilities afforded by the application of interactive theorem provers to this task, as well as the difficulties likely to be encountered in the endeavour. It turns out that the advantages offered by moving to a functional setting, including the possibility to apply higher-order abstract syntax, are considerable
Determinacy Inference for Prolog (appendix for conference submission)
Proofs of the mathematical foundations and propositions and theorems stated and used in our paper in the TPLP Special Issue on ICLP 2011
Mutual Exclusion by Interpolation
The question of what constraints must hold for a predicate to behave as a (partial) function, is key to understanding the behaviour of a logic program. It has been shown how this question can be answered by combining backward analysis, a form of analysis that propagates determinacy requirements against the control flow, with a component for deriving so-called mutual exclusion conditions. The latter infers conditions sufficient to ensure that if one clause yields an answer then another cannot. This paper addresses the challenge of how to compute these conditions by showing that this problem can be reformulated as that of vertex enumeration. Whilst directly applicable in logic programming, the method might well also find application in reasoning about type classes